package mybatis.interfaces;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * @author CKC
 * @date 2022/11/11 12:25
 */
public interface ISearchOrQueryCondition extends Serializable {
    /**
     * 模糊查询，逻辑或连接,仅支持不同字段OR连接,不支持id的模糊查询，
     * eg: searchOr[type]=enum1&searchOr[name]=name1 表示 type like '%enum1%' or name like '%name1%'
     * 备注：为了与SwaggerUI结合，产生Swagger文档
     *
     * @return null
     */
    @ApiModelProperty(name = "searchOr[?]", value = "模糊查询，逻辑或连接,仅支持不同字段OR连接,不支持id的模糊查询，eg: searchOr[type]=enum1&searchOr[name]=name1 表示 type like '%enum1%' or name like '%name1%' ")
    @JsonIgnore
    default String getSearchOrSwaggerView() {
        return null;
    }

    /**
     * @return map
     */
    Map<String, String> getSearchOr();

    /**
     * @param searchOr 条件
     */
    void setSearchOr(Map<String, String> searchOr);

    /**
     * @param field key
     * @param value value
     */
    default void addSearchOr(String field, String value) {
        if (getSearchOr() == null) {
            setSearchOr(new HashMap<>(8));
        }
        getSearchOr().put(field, value);
    }

    /**
     * isEmptySearchOr
     */
    @ApiModelProperty(hidden = true)
    @JsonIgnore
    default boolean isEmptySearchOr() {
        return getSearchOr() == null || getSearchOr().isEmpty();
    }
}
